package edu.pg.ipse.kb.frame.kb;

import edu.pg.ipse.kb.frame.core.IFunction;

/**
 * Class <code>Demon<code> is a abstract class that implements <code>IFunction</code> interface and 
 * represents, a demon, a facet of a slot in a frame which causes some action to be taken when 
 * the frame is accessed in certain types of ways. 
 * For example, an if-needed demon is activated or triggered if the value of the slot is required 
 * and a value has not yet been stored in the slot, and it should calculate or otherwise 
 * obtain a value for the slot, while a range demon is triggered if a new value is added to the slot, 
 * to check that the value added is permissible for this particular slot.
 */
public abstract class Demon implements IFunction {

    DemonType type = DemonType.IF_NEEDED;

    Slot slot;
}
